#include "kpextMemoryResource.h"

namespace kpext{

std::map<
vk::Format const, std::string const> const VKFormatEnumMap
{
    {vk::Format::eUndefined, "Undefined"},
    {vk::Format::eR4G4UnormPack8, "R4G4UnormPack8"},
    {vk::Format::eR4G4B4A4UnormPack16, "R4G4B4A4UnormPack16"},
    {vk::Format::eB4G4R4A4UnormPack16, "B4G4R4A4UnormPack16"},
    {vk::Format::eR5G6B5UnormPack16, "R5G6B5UnormPack16"},
    {vk::Format::eB5G6R5UnormPack16, "B5G6R5UnormPack16"},
    {vk::Format::eR5G5B5A1UnormPack16, "R5G5B5A1UnormPack16"},
    {vk::Format::eB5G5R5A1UnormPack16, "B5G5R5A1UnormPack16"},
    {vk::Format::eA1R5G5B5UnormPack16, "A1R5G5B5UnormPack16"},
    {vk::Format::eR8Unorm, "R8Unorm"},
    {vk::Format::eR8Snorm, "R8Snorm"},
    {vk::Format::eR8Uscaled, "R8Uscaled"},
    {vk::Format::eR8Sscaled, "R8Sscaled"},
    {vk::Format::eR8Uint, "R8Uint"},
    {vk::Format::eR8Sint, "R8Sint"},
    {vk::Format::eR8Srgb, "R8Srgb"},
    {vk::Format::eR8G8Unorm, "R8G8Unorm"},
    {vk::Format::eR8G8Snorm, "R8G8Snorm"},
    {vk::Format::eR8G8Uscaled, "R8G8Uscaled"},
    {vk::Format::eR8G8Sscaled, "R8G8Sscaled"},
    {vk::Format::eR8G8Uint, "R8G8Uint"},
    {vk::Format::eR8G8Sint, "R8G8Sint"},
    {vk::Format::eR8G8Srgb, "R8G8Srgb"},
    {vk::Format::eR8G8B8Unorm, "R8G8B8Unorm"},
    {vk::Format::eR8G8B8Snorm, "R8G8B8Snorm"},
    {vk::Format::eR8G8B8Uscaled, "R8G8B8Uscaled"},
    {vk::Format::eR8G8B8Sscaled, "R8G8B8Sscaled"},
    {vk::Format::eR8G8B8Uint, "R8G8B8Uint"},
    {vk::Format::eR8G8B8Sint, "R8G8B8Sint"},
    {vk::Format::eR8G8B8Srgb, "R8G8B8Srgb"},
    {vk::Format::eB8G8R8Unorm, "B8G8R8Unorm"},
    {vk::Format::eB8G8R8Snorm, "B8G8R8Snorm"},
    {vk::Format::eB8G8R8Uscaled, "B8G8R8Uscaled"},
    {vk::Format::eB8G8R8Sscaled, "B8G8R8Sscaled"},
    {vk::Format::eB8G8R8Uint, "B8G8R8Uint"},
    {vk::Format::eB8G8R8Sint, "B8G8R8Sint"},
    {vk::Format::eB8G8R8Srgb, "B8G8R8Srgb"},
    {vk::Format::eR8G8B8A8Unorm, "R8G8B8A8Unorm"},
    {vk::Format::eR8G8B8A8Snorm, "R8G8B8A8Snorm"},
    {vk::Format::eR8G8B8A8Uscaled, "R8G8B8A8Uscaled"},
    {vk::Format::eR8G8B8A8Sscaled, "R8G8B8A8Sscaled"},
    {vk::Format::eR8G8B8A8Uint, "R8G8B8A8Uint"},
    {vk::Format::eR8G8B8A8Sint, "R8G8B8A8Sint"},
    {vk::Format::eR8G8B8A8Srgb, "R8G8B8A8Srgb"},
    {vk::Format::eB8G8R8A8Unorm, "B8G8R8A8Unorm"},
    {vk::Format::eB8G8R8A8Snorm, "B8G8R8A8Snorm"},
    {vk::Format::eB8G8R8A8Uscaled, "B8G8R8A8Uscaled"},
    {vk::Format::eB8G8R8A8Sscaled, "B8G8R8A8Sscaled"},
    {vk::Format::eB8G8R8A8Uint, "B8G8R8A8Uint"},
    {vk::Format::eB8G8R8A8Sint, "B8G8R8A8Sint"},
    {vk::Format::eB8G8R8A8Srgb, "B8G8R8A8Srgb"},
    {vk::Format::eA8B8G8R8UnormPack32, "A8B8G8R8UnormPack32"},
    {vk::Format::eA8B8G8R8SnormPack32, "A8B8G8R8SnormPack32"},
    {vk::Format::eA8B8G8R8UscaledPack32, "A8B8G8R8UscaledPack32"},
    {vk::Format::eA8B8G8R8SscaledPack32, "A8B8G8R8SscaledPack32"},
    {vk::Format::eA8B8G8R8UintPack32, "A8B8G8R8UintPack32"},
    {vk::Format::eA8B8G8R8SintPack32, "A8B8G8R8SintPack32"},
    {vk::Format::eA8B8G8R8SrgbPack32, "A8B8G8R8SrgbPack32"},
    {vk::Format::eA2R10G10B10UnormPack32, "A2R10G10B10UnormPack32"},
    {vk::Format::eA2R10G10B10SnormPack32, "A2R10G10B10SnormPack32"},
    {vk::Format::eA2R10G10B10UscaledPack32, "A2R10G10B10UscaledPack32"},
    {vk::Format::eA2R10G10B10SscaledPack32, "A2R10G10B10SscaledPack32"},
    {vk::Format::eA2R10G10B10UintPack32, "A2R10G10B10UintPack32"},
    {vk::Format::eA2R10G10B10SintPack32, "A2R10G10B10SintPack32"},
    {vk::Format::eA2B10G10R10UnormPack32, "A2B10G10R10UnormPack32"},
    {vk::Format::eA2B10G10R10SnormPack32, "A2B10G10R10SnormPack32"},
    {vk::Format::eA2B10G10R10UscaledPack32, "A2B10G10R10UscaledPack32"},
    {vk::Format::eA2B10G10R10SscaledPack32, "A2B10G10R10SscaledPack32"},
    {vk::Format::eA2B10G10R10UintPack32, "A2B10G10R10UintPack32"},
    {vk::Format::eA2B10G10R10SintPack32, "A2B10G10R10SintPack32"},
    {vk::Format::eR16Unorm, "R16Unorm"},
    {vk::Format::eR16Snorm, "R16Snorm"},
    {vk::Format::eR16Uscaled, "R16Uscaled"},
    {vk::Format::eR16Sscaled, "R16Sscaled"},
    {vk::Format::eR16Uint, "R16Uint"},
    {vk::Format::eR16Sint, "R16Sint"},
    {vk::Format::eR16Sfloat, "R16Sfloat"},
    {vk::Format::eR16G16Unorm, "R16G16Unorm"},
    {vk::Format::eR16G16Snorm, "R16G16Snorm"},
    {vk::Format::eR16G16Uscaled, "R16G16Uscaled"},
    {vk::Format::eR16G16Sscaled, "R16G16Sscaled"},
    {vk::Format::eR16G16Uint, "R16G16Uint"},
    {vk::Format::eR16G16Sint, "R16G16Sint"},
    {vk::Format::eR16G16Sfloat, "R16G16Sfloat"},
    {vk::Format::eR16G16B16Unorm, "R16G16B16Unorm"},
    {vk::Format::eR16G16B16Snorm, "R16G16B16Snorm"},
    {vk::Format::eR16G16B16Uscaled, "R16G16B16Uscaled"},
    {vk::Format::eR16G16B16Sscaled, "R16G16B16Sscaled"},
    {vk::Format::eR16G16B16Uint, "R16G16B16Uint"},
    {vk::Format::eR16G16B16Sint, "R16G16B16Sint"},
    {vk::Format::eR16G16B16Sfloat, "R16G16B16Sfloat"},
    {vk::Format::eR16G16B16A16Unorm, "R16G16B16A16Unorm"},
    {vk::Format::eR16G16B16A16Snorm, "R16G16B16A16Snorm"},
    {vk::Format::eR16G16B16A16Uscaled, "R16G16B16A16Uscaled"},
    {vk::Format::eR16G16B16A16Sscaled, "R16G16B16A16Sscaled"},
    {vk::Format::eR16G16B16A16Uint, "R16G16B16A16Uint"},
    {vk::Format::eR16G16B16A16Sint, "R16G16B16A16Sint"},
    {vk::Format::eR16G16B16A16Sfloat, "R16G16B16A16Sfloat"},
    {vk::Format::eR32Uint, "R32Uint"},
    {vk::Format::eR32Sint, "R32Sint"},
    {vk::Format::eR32Sfloat, "R32Sfloat"},
    {vk::Format::eR32G32Uint, "R32G32Uint"},
    {vk::Format::eR32G32Sint, "R32G32Sint"},
    {vk::Format::eR32G32Sfloat, "R32G32Sfloat"},
    {vk::Format::eR32G32B32Uint, "R32G32B32Uint"},
    {vk::Format::eR32G32B32Sint, "R32G32B32Sint"},
    {vk::Format::eR32G32B32Sfloat, "R32G32B32Sfloat"},
    {vk::Format::eR32G32B32A32Uint, "R32G32B32A32Uint"},
    {vk::Format::eR32G32B32A32Sint, "R32G32B32A32Sint"},
    {vk::Format::eR32G32B32A32Sfloat, "R32G32B32A32Sfloat"},
    {vk::Format::eR64Uint, "R64Uint"},
    {vk::Format::eR64Sint, "R64Sint"},
    {vk::Format::eR64Sfloat, "R64Sfloat"},
    {vk::Format::eR64G64Uint, "R64G64Uint"},
    {vk::Format::eR64G64Sint, "R64G64Sint"},
    {vk::Format::eR64G64Sfloat, "R64G64Sfloat"},
    {vk::Format::eR64G64B64Uint, "R64G64B64Uint"},
    {vk::Format::eR64G64B64Sint, "R64G64B64Sint"},
    {vk::Format::eR64G64B64Sfloat, "R64G64B64Sfloat"},
    {vk::Format::eR64G64B64A64Uint, "R64G64B64A64Uint"},
    {vk::Format::eR64G64B64A64Sint, "R64G64B64A64Sint"},
    {vk::Format::eR64G64B64A64Sfloat, "R64G64B64A64Sfloat"},
    {vk::Format::eB10G11R11UfloatPack32, "B10G11R11UfloatPack32"},
    {vk::Format::eE5B9G9R9UfloatPack32, "5B9G9R9UfloatPack32"},
    {vk::Format::eD16Unorm, "D16Unorm"},
    {vk::Format::eX8D24UnormPack32, "X8D24UnormPack32"},
    {vk::Format::eD32Sfloat, "D32Sfloat"},
    {vk::Format::eS8Uint, "S8Uint"},
    {vk::Format::eD16UnormS8Uint, "D16UnormS8Uint"},
    {vk::Format::eD24UnormS8Uint, "D24UnormS8Uint"},
    {vk::Format::eD32SfloatS8Uint, "D32SfloatS8Uint"},
    {vk::Format::eBc1RgbUnormBlock, "Bc1RgbUnormBlock"},
    {vk::Format::eBc1RgbSrgbBlock, "Bc1RgbSrgbBlock"},
    {vk::Format::eBc1RgbaUnormBlock, "Bc1RgbaUnormBlock"},
    {vk::Format::eBc1RgbaSrgbBlock, "Bc1RgbaSrgbBlock"},
    {vk::Format::eBc2UnormBlock, "Bc2UnormBlock"},
    {vk::Format::eBc2SrgbBlock, "Bc2SrgbBlock"},
    {vk::Format::eBc3UnormBlock, "Bc3UnormBlock"},
    {vk::Format::eBc3SrgbBlock, "Bc3SrgbBlock"},
    {vk::Format::eBc4UnormBlock, "Bc4UnormBlock"},
    {vk::Format::eBc4SnormBlock, "Bc4SnormBlock"},
    {vk::Format::eBc5UnormBlock, "Bc5UnormBlock"},
    {vk::Format::eBc5SnormBlock, "Bc5SnormBlock"},
    {vk::Format::eBc6HUfloatBlock, "Bc6HUfloatBlock"},
    {vk::Format::eBc6HSfloatBlock, "Bc6HSfloatBlock"},
    {vk::Format::eBc7UnormBlock, "Bc7UnormBlock"},
    {vk::Format::eBc7SrgbBlock, "Bc7SrgbBlock"},
    {vk::Format::eEtc2R8G8B8UnormBlock, "tc2R8G8B8UnormBlock"},
    {vk::Format::eEtc2R8G8B8SrgbBlock, "tc2R8G8B8SrgbBlock"},
    {vk::Format::eEtc2R8G8B8A1UnormBlock, "tc2R8G8B8A1UnormBlock"},
    {vk::Format::eEtc2R8G8B8A1SrgbBlock, "tc2R8G8B8A1SrgbBlock"},
    {vk::Format::eEtc2R8G8B8A8UnormBlock, "tc2R8G8B8A8UnormBlock"},
    {vk::Format::eEtc2R8G8B8A8SrgbBlock, "tc2R8G8B8A8SrgbBlock"},
    {vk::Format::eEacR11UnormBlock, "acR11UnormBlock"},
    {vk::Format::eEacR11SnormBlock, "acR11SnormBlock"},
    {vk::Format::eEacR11G11UnormBlock, "acR11G11UnormBlock"},
    {vk::Format::eEacR11G11SnormBlock, "acR11G11SnormBlock"},
    {vk::Format::eAstc4x4UnormBlock, "Astc4x4UnormBlock"},
    {vk::Format::eAstc4x4SrgbBlock, "Astc4x4SrgbBlock"},
    {vk::Format::eAstc5x4UnormBlock, "Astc5x4UnormBlock"},
    {vk::Format::eAstc5x4SrgbBlock, "Astc5x4SrgbBlock"},
    {vk::Format::eAstc5x5UnormBlock, "Astc5x5UnormBlock"},
    {vk::Format::eAstc5x5SrgbBlock, "Astc5x5SrgbBlock"},
    {vk::Format::eAstc6x5UnormBlock, "Astc6x5UnormBlock"},
    {vk::Format::eAstc6x5SrgbBlock, "Astc6x5SrgbBlock"},
    {vk::Format::eAstc6x6UnormBlock, "Astc6x6UnormBlock"},
    {vk::Format::eAstc6x6SrgbBlock, "Astc6x6SrgbBlock"},
    {vk::Format::eAstc8x5UnormBlock, "Astc8x5UnormBlock"},
    {vk::Format::eAstc8x5SrgbBlock, "Astc8x5SrgbBlock"},
    {vk::Format::eAstc8x6UnormBlock, "Astc8x6UnormBlock"},
    {vk::Format::eAstc8x6SrgbBlock, "Astc8x6SrgbBlock"},
    {vk::Format::eAstc8x8UnormBlock, "Astc8x8UnormBlock"},
    {vk::Format::eAstc8x8SrgbBlock, "Astc8x8SrgbBlock"},
    {vk::Format::eAstc10x5UnormBlock, "Astc10x5UnormBlock"},
    {vk::Format::eAstc10x5SrgbBlock, "Astc10x5SrgbBlock"},
    {vk::Format::eAstc10x6UnormBlock, "Astc10x6UnormBlock"},
    {vk::Format::eAstc10x6SrgbBlock, "Astc10x6SrgbBlock"},
    {vk::Format::eAstc10x8UnormBlock, "Astc10x8UnormBlock"},
    {vk::Format::eAstc10x8SrgbBlock, "Astc10x8SrgbBlock"},
    {vk::Format::eAstc10x10UnormBlock, "Astc10x10UnormBlock"},
    {vk::Format::eAstc10x10SrgbBlock, "Astc10x10SrgbBlock"},
    {vk::Format::eAstc12x10UnormBlock, "Astc12x10UnormBlock"},
    {vk::Format::eAstc12x10SrgbBlock, "Astc12x10SrgbBlock"},
    {vk::Format::eAstc12x12UnormBlock, "Astc12x12UnormBlock"},
    {vk::Format::eAstc12x12SrgbBlock, "Astc12x12SrgbBlock"},
    {vk::Format::eG8B8G8R8422Unorm, "G8B8G8R8422Unorm"},
    {vk::Format::eB8G8R8G8422Unorm, "B8G8R8G8422Unorm"},
    {vk::Format::eG8B8R83Plane420Unorm, "G8B8R83Plane420Unorm"},
    {vk::Format::eG8B8R82Plane420Unorm, "G8B8R82Plane420Unorm"},
    {vk::Format::eG8B8R83Plane422Unorm, "G8B8R83Plane422Unorm"},
    {vk::Format::eG8B8R82Plane422Unorm, "G8B8R82Plane422Unorm"},
    {vk::Format::eG8B8R83Plane444Unorm, "G8B8R83Plane444Unorm"},
    {vk::Format::eR10X6UnormPack16, "R10X6UnormPack16"},
    {vk::Format::eR10X6G10X6Unorm2Pack16, "R10X6G10X6Unorm2Pack16"},
    {vk::Format::eR10X6G10X6B10X6A10X6Unorm4Pack16, "R10X6G10X6B10X6A10X6Unorm4Pack16"},
    {vk::Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16, "G10X6B10X6G10X6R10X6422Unorm4Pack16"},
    {vk::Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16, "B10X6G10X6R10X6G10X6422Unorm4Pack16"},
    {vk::Format::eG10X6B10X6R10X63Plane420Unorm3Pack16, "G10X6B10X6R10X63Plane420Unorm3Pack16"},
    {vk::Format::eG10X6B10X6R10X62Plane420Unorm3Pack16, "G10X6B10X6R10X62Plane420Unorm3Pack16"},
    {vk::Format::eG10X6B10X6R10X63Plane422Unorm3Pack16, "G10X6B10X6R10X63Plane422Unorm3Pack16"},
    {vk::Format::eG10X6B10X6R10X62Plane422Unorm3Pack16, "G10X6B10X6R10X62Plane422Unorm3Pack16"},
    {vk::Format::eG10X6B10X6R10X63Plane444Unorm3Pack16, "G10X6B10X6R10X63Plane444Unorm3Pack16"},
    {vk::Format::eR12X4UnormPack16, "R12X4UnormPack16"},
    {vk::Format::eR12X4G12X4Unorm2Pack16, "R12X4G12X4Unorm2Pack16"},
    {vk::Format::eR12X4G12X4B12X4A12X4Unorm4Pack16, "R12X4G12X4B12X4A12X4Unorm4Pack16"},
    {vk::Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16, "G12X4B12X4G12X4R12X4422Unorm4Pack16"},
    {vk::Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16, "B12X4G12X4R12X4G12X4422Unorm4Pack16"},
    {vk::Format::eG12X4B12X4R12X43Plane420Unorm3Pack16, "G12X4B12X4R12X43Plane420Unorm3Pack16"},
    {vk::Format::eG12X4B12X4R12X42Plane420Unorm3Pack16, "G12X4B12X4R12X42Plane420Unorm3Pack16"},
    {vk::Format::eG12X4B12X4R12X43Plane422Unorm3Pack16, "G12X4B12X4R12X43Plane422Unorm3Pack16"},
    {vk::Format::eG12X4B12X4R12X42Plane422Unorm3Pack16, "G12X4B12X4R12X42Plane422Unorm3Pack16"},
    {vk::Format::eG12X4B12X4R12X43Plane444Unorm3Pack16, "G12X4B12X4R12X43Plane444Unorm3Pack16"},
    {vk::Format::eG16B16G16R16422Unorm, "G16B16G16R16422Unorm"},
    {vk::Format::eB16G16R16G16422Unorm, "B16G16R16G16422Unorm"},
    {vk::Format::eG16B16R163Plane420Unorm, "G16B16R163Plane420Unorm"},
    {vk::Format::eG16B16R162Plane420Unorm, "G16B16R162Plane420Unorm"},
    {vk::Format::eG16B16R163Plane422Unorm, "G16B16R163Plane422Unorm"},
    {vk::Format::eG16B16R162Plane422Unorm, "G16B16R162Plane422Unorm"},
    {vk::Format::eG16B16R163Plane444Unorm, "G16B16R163Plane444Unorm"},
    {vk::Format::ePvrtc12BppUnormBlockIMG, "Pvrtc12BppUnormBlockIMG"},
    {vk::Format::ePvrtc14BppUnormBlockIMG, "Pvrtc14BppUnormBlockIMG"},
    {vk::Format::ePvrtc22BppUnormBlockIMG, "Pvrtc22BppUnormBlockIMG"},
    {vk::Format::ePvrtc24BppUnormBlockIMG, "Pvrtc24BppUnormBlockIMG"},
    {vk::Format::ePvrtc12BppSrgbBlockIMG, "Pvrtc12BppSrgbBlockIMG"},
    {vk::Format::ePvrtc14BppSrgbBlockIMG, "Pvrtc14BppSrgbBlockIMG"},
    {vk::Format::ePvrtc22BppSrgbBlockIMG, "Pvrtc22BppSrgbBlockIMG"},
    {vk::Format::ePvrtc24BppSrgbBlockIMG, "Pvrtc24BppSrgbBlockIMG"},
//    {vk::Format::eAstc4x4SfloatBlockEXT, "Astc4x4SfloatBlockEXT"},
//    {vk::Format::eAstc5x4SfloatBlockEXT, "Astc5x4SfloatBlockEXT"},
//    {vk::Format::eAstc5x5SfloatBlockEXT, "Astc5x5SfloatBlockEXT"},
//    {vk::Format::eAstc6x5SfloatBlockEXT, "Astc6x5SfloatBlockEXT"},
//    {vk::Format::eAstc6x6SfloatBlockEXT, "Astc6x6SfloatBlockEXT"},
//    {vk::Format::eAstc8x5SfloatBlockEXT, "Astc8x5SfloatBlockEXT"},
//    {vk::Format::eAstc8x6SfloatBlockEXT, "Astc8x6SfloatBlockEXT"},
//    {vk::Format::eAstc8x8SfloatBlockEXT, "Astc8x8SfloatBlockEXT"},
//    {vk::Format::eAstc10x5SfloatBlockEXT, "Astc10x5SfloatBlockEXT"},
//    {vk::Format::eAstc10x6SfloatBlockEXT, "Astc10x6SfloatBlockEXT"},
//    {vk::Format::eAstc10x8SfloatBlockEXT, "Astc10x8SfloatBlockEXT"},
//    {vk::Format::eAstc10x10SfloatBlockEXT, "Astc10x10SfloatBlockEXT"},
//    {vk::Format::eAstc12x10SfloatBlockEXT, "Astc12x10SfloatBlockEXT"},
//    {vk::Format::eAstc12x12SfloatBlockEXT, "Astc12x12SfloatBlockEXT"},
//    {vk::Format::eG8B8R82Plane444UnormEXT, "G8B8R82Plane444UnormEXT"},
//    {vk::Format::eG10X6B10X6R10X62Plane444Unorm3Pack16EXT, "G10X6B10X6R10X62Plane444Unorm3Pack16EXT"},
//    {vk::Format::eG12X4B12X4R12X42Plane444Unorm3Pack16EXT, "G12X4B12X4R12X42Plane444Unorm3Pack16EXT"},
//    {vk::Format::eG16B16R162Plane444UnormEXT, "G16B16R162Plane444UnormEXT"},
//    {vk::Format::eA4R4G4B4UnormPack16EXT, "A4R4G4B4UnormPack16EXT"},
//    {vk::Format::eA4B4G4R4UnormPack16EXT, "A4B4G4R4UnormPack16EXT"},
//    {vk::Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR, "B10X6G10X6R10X6G10X6422Unorm4Pack16KHR"},
//    {vk::Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR, "B12X4G12X4R12X4G12X4422Unorm4Pack16KHR"},
//    {vk::Format::eB16G16R16G16422UnormKHR, "B16G16R16G16422UnormKHR"},
//    {vk::Format::eB8G8R8G8422UnormKHR, "B8G8R8G8422UnormKHR"},
//    {vk::Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR, "G10X6B10X6G10X6R10X6422Unorm4Pack16KHR"},
//    {vk::Format::eG10X6B10X6R10X62Plane420Unorm3Pack16KHR, "G10X6B10X6R10X62Plane420Unorm3Pack16KHR"},
//    {vk::Format::eG10X6B10X6R10X62Plane422Unorm3Pack16KHR, "G10X6B10X6R10X62Plane422Unorm3Pack16KHR"},
//    {vk::Format::eG10X6B10X6R10X63Plane420Unorm3Pack16KHR, "G10X6B10X6R10X63Plane420Unorm3Pack16KHR"},
//    {vk::Format::eG10X6B10X6R10X63Plane422Unorm3Pack16KHR, "G10X6B10X6R10X63Plane422Unorm3Pack16KHR"},
//    {vk::Format::eG10X6B10X6R10X63Plane444Unorm3Pack16KHR, "G10X6B10X6R10X63Plane444Unorm3Pack16KHR"},
//    {vk::Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR, "G12X4B12X4G12X4R12X4422Unorm4Pack16KHR"},
//    {vk::Format::eG12X4B12X4R12X42Plane420Unorm3Pack16KHR, "G12X4B12X4R12X42Plane420Unorm3Pack16KHR"},
//    {vk::Format::eG12X4B12X4R12X42Plane422Unorm3Pack16KHR, "G12X4B12X4R12X42Plane422Unorm3Pack16KHR"},
//    {vk::Format::eG12X4B12X4R12X43Plane420Unorm3Pack16KHR, "G12X4B12X4R12X43Plane420Unorm3Pack16KHR"},
//    {vk::Format::eG12X4B12X4R12X43Plane422Unorm3Pack16KHR, "G12X4B12X4R12X43Plane422Unorm3Pack16KHR"},
//    {vk::Format::eG12X4B12X4R12X43Plane444Unorm3Pack16KHR, "G12X4B12X4R12X43Plane444Unorm3Pack16KHR"},
//    {vk::Format::eG16B16G16R16422UnormKHR, "G16B16G16R16422UnormKHR"},
//    {vk::Format::eG16B16R162Plane420UnormKHR, "G16B16R162Plane420UnormKHR"},
//    {vk::Format::eG16B16R162Plane422UnormKHR, "G16B16R162Plane422UnormKHR"},
//    {vk::Format::eG16B16R163Plane420UnormKHR, "G16B16R163Plane420UnormKHR"},
//    {vk::Format::eG16B16R163Plane422UnormKHR, "G16B16R163Plane422UnormKHR"},
//    {vk::Format::eG16B16R163Plane444UnormKHR, "G16B16R163Plane444UnormKHR"},
//    {vk::Format::eG8B8G8R8422UnormKHR, "G8B8G8R8422UnormKHR"},
//    {vk::Format::eG8B8R82Plane420UnormKHR, "G8B8R82Plane420UnormKHR"},
//    {vk::Format::eG8B8R82Plane422UnormKHR, "G8B8R82Plane422UnormKHR"},
//    {vk::Format::eG8B8R83Plane420UnormKHR, "G8B8R83Plane420UnormKHR"},
//    {vk::Format::eG8B8R83Plane422UnormKHR, "G8B8R83Plane422UnormKHR"},
//    {vk::Format::eG8B8R83Plane444UnormKHR, "G8B8R83Plane444UnormKHR"},
//    {vk::Format::eR10X6G10X6B10X6A10X6Unorm4Pack16KHR, "R10X6G10X6B10X6A10X6Unorm4Pack16KHR"},
//    {vk::Format::eR10X6G10X6Unorm2Pack16KHR, "R10X6G10X6Unorm2Pack16KHR"},
//    {vk::Format::eR10X6UnormPack16KHR, "R10X6UnormPack16KHR"},
//    {vk::Format::eR12X4G12X4B12X4A12X4Unorm4Pack16KHR, "R12X4G12X4B12X4A12X4Unorm4Pack16KHR"},
//    {vk::Format::eR12X4G12X4Unorm2Pack16KHR, "R12X4G12X4Unorm2Pack16KHR"},
//    {vk::Format::eR12X4UnormPack16KHR, "R12X4UnormPack16KHR"},
};  //VKFormatEnumMap

//std::vector<int> const TexelBufInterestFormats2{
//    1,
//};

std::vector<vk::Format> const TexelBufInterestFormats(
        {
            vk::Format::eR16Uint,
            vk::Format::eR16G16Uint,
            vk::Format::eR16Sint,
            vk::Format::eR16G16Sint,
            vk::Format::eR8Uint,
            vk::Format::eR8G8Uint,
            vk::Format::eR8G8B8Uint,
            vk::Format::eR8G8B8A8Uint,
            vk::Format::eR8Sint,
            vk::Format::eR8G8Sint,
            vk::Format::eR8G8B8Sint,
            vk::Format::eR8G8B8A8Sint,
        }
        ); // TexelBufInterestFormats



std::string vkFormat2Str(const vk::Format  & format){
    auto it = VKFormatEnumMap.find(format);
    if(it == VKFormatEnumMap.end()){
        std::ostringstream os;
        os << static_cast<unsigned int>(format);
        return os.str();
    }
    return it->second;
}

void checkTexelBufFormat(vk::FormatProperties & fprops,
                         bool * texelbuf,
                         bool * uniformtexelbuf,
                         bool * texelbufatomic){
    if(texelbuf){
        if(fprops.bufferFeatures &
                vk::FormatFeatureFlagBits::eStorageTexelBuffer){
            *texelbuf = true;
        }
    }

    if(uniformtexelbuf){
        if(fprops.bufferFeatures &
                vk::FormatFeatureFlagBits::eUniformTexelBuffer){
            *uniformtexelbuf = true;
        }
    }

    if(texelbufatomic){
        if(fprops.bufferFeatures &
                vk::FormatFeatureFlagBits::eStorageTexelBufferAtomic){
            *texelbufatomic = true;
        }
    }

}


} // namespace kpext

